//
//  Status.swift
//  WeiBo_test
//
//  Created by 张leslie45 on 16/1/20.
//  Copyright © 2016年 张leslie45. All rights reserved.
//

import UIKit

class Status: NSObject {
 
   //微博创建时间
    var created_at:String?
    //Int NSInteger 在iPhone 5 5c 4s 4是32位
    //Int 64 long long
    var id :Int64 = 0
    //微博信息内容
    var text:String?
    //微博来源
    var source:String?
    //用户如果不做任何特殊处理,最终会对应上一个字典
    var user: User?
    
    //配图视图
    var pic_urls:[[String:String]]? {
        didSet {
            //完成配图视图的数组的设置之后 开始给imageURLs赋值
            //didSet 只需要设置一次  但是 计算型属性 每次都要进行计算
            //快速判断 urls不为空 并且(&&) 不为空的urls的数量不为0
            if let urls = pic_urls where urls.count != 0 {
//                实例化属性
                imageURLs = [NSURL]()
                for item in urls {
                  let urlString = item["thumbnail_pic"]
                  //强制解包  表示相信后端一定能给一个urlString,并且urlString 一定可以转换为NSURL对象
                    let imageURL = NSURL(string: urlString!)!
 
                }
            }
        }
    }
 
    //计算型属性 可以实现 url类型的转换
    var imageURLs: [NSURL]?
    //构造方法
    init(dict:[String:AnyObject]) {
        super.init()
        setValuesForKeysWithDictionary(dict)
    }
    
    
    //重写kvc赋值的方法
    override func setValue(value: AnyObject?, forKey key: String) {
        if key == "user"{
           //value就是一个字典对象
            if let dict = value as?[String:AnyObject]{
            //能够转化为[String:AnyObject]字典对象
            //字典转模型
               user = User(dict: dict)
                //return 非常关键,如果掉了前面的字典转模型就白做了
               return
            }
        }
        super.setValue(value, forKey: key)
    }
    
    
    //过滤
    override func setValue(value: AnyObject?, forUndefinedKey key: String) { }
    
    
    //重写对象的描述信息
    override var description :String {
       //使用KVC方式获取对象的字典信息
       let keys = ["created_at","id","text","source"]
       let dict = self.dictionaryWithValuesForKeys(keys)
       return dict.description
    
    }

}
